// 照片分享模块
class PhotoShare {
    constructor() {
        this.shareServices = null;
        this.currentPhoto = null;
        this.isInitialized = false;
        console.log('PhotoShare 构造函数被调用');
    }

    // 初始化分享模块
    async init() {
        console.log('=== 分享模块初始化开始 ===');
        
        if (typeof plus === 'undefined') {
            console.warn('H5+环境未检测到，分享功能不可用');
            return;
        }

        // 等待plusready事件
        if (document.readyState === 'loading') {
            await new Promise(resolve => {
                document.addEventListener('DOMContentLoaded', resolve);
            });
        }

        // 等待plus对象完全初始化
        if (!plus.share) {
            await new Promise(resolve => {
                const checkPlus = () => {
                    if (plus.share) {
                        resolve();
                    } else {
                        setTimeout(checkPlus, 100);
                    }
                };
                checkPlus();
            });
        }

        this.isInitialized = true;
        console.log('分享模块初始化完成');
    }

    // 设置当前要分享的照片
    setCurrentPhoto(photo) {
        console.log('设置当前分享照片:', photo);
        this.currentPhoto = photo;
    }

    // 显示分享选项
    showShareOptions() {
        if (!this.currentPhoto) {
            showToast('没有可分享的照片', 'error');
            return;
        }

        console.log('显示分享选项，当前照片:', this.currentPhoto);

        // 创建分享选项菜单 - 只保留系统分享和保存到相册
        let options = [
            { title: '系统分享', icon: '📤', action: this.shareWithSystem },
            { title: '保存到相册', icon: '💾', action: this.saveToGallery }
        ];

        this.showActionSheet(options);
    }

    // 显示操作菜单
    showActionSheet(options) {
        const actionSheet = document.createElement('div');
        actionSheet.className = 'action-sheet-overlay';
        
        // 为每个选项创建唯一的事件处理函数
        const optionButtons = options.map((option, index) => {
            const buttonId = `share-option-${index}`;
            const actionFunction = `window.shareAction${index}`;
            
            // 创建全局函数
            window[`shareAction${index}`] = () => {
                // 关闭菜单
                const overlay = document.querySelector('.action-sheet-overlay');
                if (overlay) {
                    overlay.remove();
                }
                // 执行对应的分享操作
                option.action.call(photoShare);
            };
            
            return `
                <button class="action-sheet-item" onclick="${actionFunction}()">
                    <span class="action-icon">${option.icon}</span>
                    <span class="action-title">${option.title}</span>
                </button>
            `;
        }).join('');
        
        actionSheet.innerHTML = `
            <div class="action-sheet">
                <div class="action-sheet-header">
                    <h4>选择分享方式</h4>
                    <button class="close-btn" onclick="closeShareMenu()">×</button>
                </div>
                <div class="action-sheet-content">
                    ${optionButtons}
                </div>
                <div class="action-sheet-footer">
                    <button class="cancel-btn" onclick="closeShareMenu()">取消</button>
                </div>
            </div>
        `;

        document.body.appendChild(actionSheet);
        
        // 添加关闭菜单的全局函数
        window.closeShareMenu = () => {
            const overlay = document.querySelector('.action-sheet-overlay');
            if (overlay) {
                overlay.remove();
            }
        };
        
        // 添加样式
        if (!document.getElementById('action-sheet-styles')) {
            const style = document.createElement('style');
            style.id = 'action-sheet-styles';
            style.textContent = `
                .action-sheet-overlay {
                    position: fixed;
                    top: 0;
                    left: 0;
                    right: 0;
                    bottom: 0;
                    background: rgba(0, 0, 0, 0.5);
                    z-index: 10000;
                    display: flex;
                    align-items: flex-end;
                }
                .action-sheet {
                    width: 100%;
                    background: white;
                    border-radius: 12px 12px 0 0;
                    max-height: 80vh;
                    overflow: hidden;
                }
                .action-sheet-header {
                    padding: 16px;
                    border-bottom: 1px solid #eee;
                    display: flex;
                    justify-content: space-between;
                    align-items: center;
                }
                .action-sheet-header h4 {
                    margin: 0;
                    font-size: 16px;
                    font-weight: 600;
                }
                .close-btn {
                    background: none;
                    border: none;
                    font-size: 20px;
                    cursor: pointer;
                    padding: 0;
                    width: 24px;
                    height: 24px;
                    display: flex;
                    align-items: center;
                    justify-content: center;
                }
                .action-sheet-content {
                    max-height: 60vh;
                    overflow-y: auto;
                }
                .action-sheet-item {
                    width: 100%;
                    padding: 16px;
                    border: none;
                    background: white;
                    display: flex;
                    align-items: center;
                    gap: 12px;
                    cursor: pointer;
                    border-bottom: 1px solid #f5f5f5;
                }
                .action-sheet-item:active {
                    background: #f5f5f5;
                }
                .action-icon {
                    font-size: 20px;
                }
                .action-title {
                    font-size: 16px;
                    color: #333;
                }
                .action-sheet-footer {
                    padding: 16px;
                    border-top: 1px solid #eee;
                }
                .cancel-btn {
                    width: 100%;
                    padding: 12px;
                    border: none;
                    background: #f5f5f5;
                    border-radius: 8px;
                    font-size: 16px;
                    color: #666;
                    cursor: pointer;
                }
                .cancel-btn:active {
                    background: #e5e5e5;
                }
            `;
            document.head.appendChild(style);
        }
    }

    // 系统分享
    async shareWithSystem() {
        console.log('使用系统分享');
        
        if (!this.currentPhoto) {
            showToast('没有可分享的照片', 'error');
            return;
        }

        try {
            // 获取正确的文件路径
            let imagePath = this.currentPhoto.path;
            
            // 如果有实际文件路径，优先使用
            if (this.currentPhoto.filePath) {
                imagePath = this.currentPhoto.filePath;
                console.log('使用实际文件路径:', imagePath);
            } else {
                console.log('使用URL路径:', imagePath);
            }

            // 准备分享消息
            const shareMessage = {
                type: 'image',
                pictures: [imagePath],
                content: `房屋拍照助手 - ${this.currentPhoto.filename}`,
                title: '房屋照片分享'
            };

            console.log('系统分享消息:', shareMessage);

            // 调用系统分享
            plus.share.sendWithSystem(shareMessage, () => {
                console.log('系统分享成功');
                showToast('分享成功', 'success');
            }, (error) => {
                console.error('系统分享失败:', error);
                showToast('分享失败: ' + error.message, 'error');
            });

        } catch (error) {
            console.error('系统分享异常:', error);
            showToast('分享失败: ' + error.message, 'error');
        }
    }



    // 保存到相册
    async saveToGallery() {
        console.log('保存到相册');
        
        if (!this.currentPhoto) {
            showToast('没有可保存的照片', 'error');
            return;
        }

        try {
            // 检查Gallery权限
            if (typeof plus === 'undefined' || !plus.gallery) {
                showToast('相册功能不可用', 'error');
                return;
            }

            // 获取正确的文件路径
            let imagePath = this.currentPhoto.path;
            
            // 如果有实际文件路径，优先使用
            if (this.currentPhoto.filePath) {
                imagePath = this.currentPhoto.filePath;
                console.log('使用实际文件路径保存到相册:', imagePath);
            } else {
                console.log('使用URL路径保存到相册:', imagePath);
            }

            // 保存图片到相册
            plus.gallery.save(imagePath, () => {
                console.log('保存到相册成功');
                showToast('已保存到相册', 'success');
            }, (error) => {
                console.error('保存到相册失败:', error);
                showToast('保存到相册失败: ' + error.message, 'error');
            });

        } catch (error) {
            console.error('保存到相册异常:', error);
            showToast('保存到相册失败: ' + error.message, 'error');
        }
    }

    // 分享多张照片
    async shareMultiplePhotos(photos) {
        console.log('分享多张照片:', photos);
        
        if (!photos || photos.length === 0) {
            showToast('没有可分享的照片', 'error');
            return;
        }

        if (photos.length === 1) {
            // 单张照片，使用普通分享
            this.setCurrentPhoto(photos[0]);
            this.showShareOptions();
            return;
        }

        // 多张照片，只能使用系统分享
        try {
            const picturePaths = photos.map(photo => {
                // 优先使用实际文件路径
                return photo.filePath || photo.path;
            });
            const shareMessage = {
                type: 'image',
                pictures: picturePaths,
                content: `房屋拍照助手 - 分享${photos.length}张照片`,
                title: '房屋照片分享'
            };

            console.log('多张照片分享消息:', shareMessage);

            plus.share.sendWithSystem(shareMessage, () => {
                console.log('多张照片分享成功');
                showToast('分享成功', 'success');
            }, (error) => {
                console.error('多张照片分享失败:', error);
                showToast('分享失败: ' + error.message, 'error');
            });

        } catch (error) {
            console.error('多张照片分享异常:', error);
            showToast('分享失败: ' + error.message, 'error');
        }
    }
}

// 创建全局分享实例
console.log('创建全局分享实例');
const photoShare = new PhotoShare();

// 页面加载完成后初始化分享模块
document.addEventListener('DOMContentLoaded', function() {
    console.log('DOM加载完成，初始化分享模块');
    photoShare.init();
});

// 导出全局函数供HTML调用
console.log('导出分享全局函数');
window.sharePhoto = () => {
    console.log('调用全局sharePhoto函数');
    
    // 从模态框获取当前照片信息
    const modalPhoto = document.getElementById('modal-photo');
    const modalFilename = document.getElementById('modal-filename');
    const modalTime = document.getElementById('modal-time');
    const modalGroup = document.getElementById('modal-group');
    
    if (!modalPhoto || !modalPhoto.src) {
        showToast('没有可分享的照片', 'error');
        return;
    }

    // 获取当前照片的完整数据
    const modal = document.getElementById('photo-modal');
    const photoId = modal ? modal.getAttribute('data-current-photo-id') : null;
    
    if (photoId && typeof gallery !== 'undefined') {
        // 从gallery中获取完整的照片对象
        const photoItem = document.querySelector(`[data-photo*="${photoId}"]`);
        if (photoItem) {
            try {
                const photoData = JSON.parse(photoItem.getAttribute('data-photo'));
                console.log('从DOM获取的照片数据:', photoData);
                
                // 设置当前照片并显示分享选项
                photoShare.setCurrentPhoto(photoData);
                photoShare.showShareOptions();
                return;
            } catch (error) {
                console.error('解析照片数据失败:', error);
            }
        }
    }

    // 降级方案：构造基本照片对象
    const photo = {
        path: modalPhoto.src,
        filename: modalFilename ? modalFilename.textContent : '未知文件',
        timestamp: modalTime ? new Date(modalTime.textContent).getTime() : Date.now(),
        group: modalGroup ? modalGroup.textContent : '未分组'
    };

    console.log('使用降级方案构造的照片对象:', photo);
    
    // 设置当前照片并显示分享选项
    photoShare.setCurrentPhoto(photo);
    photoShare.showShareOptions();
};

// 显示提示消息的辅助函数
function showToast(message, type = 'info') {
    if (typeof plus !== 'undefined' && plus.nativeUI) {
        plus.nativeUI.toast(message, {
            icon: type === 'success' ? 'success' : type === 'error' ? 'error' : 'info',
            verticalAlign: 'center'
        });
    } else {
        // 降级到alert
        alert(message);
    }
} 